﻿using System;
using COMMON;
using DAL;
using VO;

namespace BLL
{
    public class CampanhaClienteBLL
    {

        #region Insert
        public static Retorno<CampanhaCliente> Insert(CampanhaCliente obj)
        {
            var objReturn = new Retorno<CampanhaCliente>();
            try
            {
                //Insere Cliente
                new CampanhaClienteDAL().Insert(obj);
                objReturn.Error = Enumerator.Error.Success;
                objReturn.Message = "OK";
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        #endregion

        #region Delete
        public static Retorno<CampanhaCliente> Delete(int idCampanha)
        {
            var objReturn = new Retorno<CampanhaCliente>();
            try
            {
                //Deleta Cliente
                new CampanhaClienteDAL().Delete(idCampanha);
                objReturn.Error = Enumerator.Error.Success;
                objReturn.Message = "OK";
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }

        public static Retorno<CampanhaCliente> Delete(int idCampanha, int idCliente)
        {
            var objReturn = new Retorno<CampanhaCliente>();
            try
            {
                //Deleta Cliente
                new CampanhaClienteDAL().Delete(idCampanha, idCliente);
                objReturn.Error = Enumerator.Error.Success;
                objReturn.Message = "OK";
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        #endregion

        #region Select
        public static Retorno<CampanhaCliente> Select(int idCampanha, FiltroCliente obj)
        {
            var objReturn = new Retorno<CampanhaCliente>();
            try
            {
                //Lista Campanha
                objReturn.List = new CampanhaClienteDAL().Select(idCampanha, obj);
                objReturn.Error = Enumerator.Error.Success;
                objReturn.Message = "OK";
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        public static Retorno<CampanhaCliente> SelectClienteCampanhaBLL(int idCampanha)
        {
            var objReturn = new Retorno<CampanhaCliente>();
            try
            {
                //Lista Campanha
                objReturn.List = new CampanhaClienteDAL().SelectClienteCampanhaDAL(idCampanha);
                if (objReturn.List.Count > 0)
                {
                    objReturn.Error = Enumerator.Error.Success;
                    objReturn.Message = "OK";
                }
                else
                {
                    objReturn.Error = Enumerator.Error.NoRegistry;
                    objReturn.Message = "NOK";
                }
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        

        public static Retorno<CampanhaCliente> Select(int idCampanha, int idCliente)
        {
            var objReturn = new Retorno<CampanhaCliente>();
            try
            {
                //Lista Campanha
                objReturn.List = new CampanhaClienteDAL().Select(idCampanha, idCliente);
                if (objReturn.List.Count > 0)
                {
                    objReturn.Error = Enumerator.Error.Success;
                    objReturn.Message = "OK";                    
                }
                else
                {
                    objReturn.Error = Enumerator.Error.NoRegistry;
                    objReturn.Message = "NOK";
                }
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        #endregion

        #region CopiaCliente
        public static Retorno<CampanhaCliente> CopiaCliente(int idCampanha, int idCampanhaNova)
        {
            var objReturn = new Retorno<CampanhaCliente>();
            try
            {
                //Copia clientes de uma campanha para outra
                new CampanhaClienteDAL().CopiaCliente(idCampanha, idCampanhaNova);
                objReturn.Error = Enumerator.Error.Success;
                objReturn.Message = "OK";
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        #endregion

        #region SelectClienteSemCampanha
        public static Retorno<CampanhaCliente> SelectClienteSemCampanha(int idCampanha, string nomeCliente = "", string letra = "")
        {
            var objReturn = new Retorno<CampanhaCliente>();
            try
            {
                //Lista clientes que não estão cadastrados na campanha
                objReturn.List = new CampanhaClienteDAL().SelectClienteSemCampanha(idCampanha, nomeCliente, letra);
                if (objReturn.List.Count > 0)
                {
                    objReturn.Error = Enumerator.Error.Success;
                    objReturn.Message = "OK";
                }
                else
                {
                    objReturn.Error = Enumerator.Error.NoRegistry;
                    objReturn.Message = "NOK";
                }
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        #endregion

        #region QuantidadeClienteCampanha
        public static Retorno<CampanhaCliente> QuantidadeClienteCampanha(int idCampanha)
        {
            var objReturn = new Retorno<CampanhaCliente>();
            try
            {
                //Retorna quantidade de clientes da campanha
                objReturn.ID = new CampanhaClienteDAL().QuantidadeClienteCampanha(idCampanha);
                objReturn.Error = Enumerator.Error.Success;
                objReturn.Message = "OK";
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        #endregion

    }
}